// 只在浏览器端运行
declare global {
  interface Window {
    translate?: any;
  }
}

function loadScript(src: string) {
  return new Promise<void>((resolve, reject) => {
    if (document.querySelector(`script[src="${src}"]`)) return resolve();
    const s = document.createElement("script");
    s.src = src;
    s.async = true;
    s.onload = () => resolve();
    s.onerror = () => reject(new Error(`Failed to load ${src}`));
    document.head.appendChild(s);
  });
}

export default defineNuxtPlugin(async (nuxtApp) => {
  // 1) 拉取 CDN（你给的地址）
  await loadScript("https://cdn.staticfile.net/translate.js/3.2.1/translate.js");

  const t = window.translate;
  if (!t) return;

  // 2) 你原来的初始化
  t.selectLanguageTag.show = false; // 不显示内置 select
  t.service.use("client.edge"); // 服务
  const savedLang = localStorage.getItem("preferred_lang") || "spanish";
  t.changeLanguage(savedLang);
  // 3) 首次执行
  t.execute();

  // 在页面完成渲染&过渡后再执行翻译
  nuxtApp.hook("page:finish", () => {
    // 下一帧，确保 DOM 全部到位
    requestAnimationFrame(() => t.execute());
  });

  // 5) 注入到 Nuxt，方便组件里调用
  nuxtApp.provide("translatejs", t);
});
